package com.xbongbong.saas.enums.product;

import com.xbongbong.i18n.util.I18nMessageUtil;
import com.xbongbong.paas.enums.FieldTypeEnum;
import com.xbongbong.saas.enums.SelectProductEnum;
import com.xbongbong.saas.enums.business.ProductEnum;
import lombok.Getter;

@Getter
public enum PriceProductEnum {
    // 产品名称：text_1
    NAME(SelectProductEnum.PRODUCT.getAttr(), SelectProductEnum.PRODUCT.getAttrName(), SelectProductEnum.PRODUCT.getSaasAttr(), FieldTypeEnum.LINK_DATA.getType(), 100, 1, 0, 1),
    // 产品编号：text_2
    PRODUCT_NO(SelectProductEnum.PRODUCT_NO.getAttr(), SelectProductEnum.PRODUCT_NO.getAttrName(), SelectProductEnum.PRODUCT_NO.getSaasAttr(), ProductEnum.PRODUCT_NO.getFieldType(), 90, 1, ProductEnum.PRODUCT_NO.getRequired(), 0),
    // 产品规格：text_5
    SPECIFICATION(SelectProductEnum.SPECIFICATION.getAttr(), SelectProductEnum.SPECIFICATION.getAttrName(), SelectProductEnum.SPECIFICATION.getSaasAttr(), ProductEnum.SPECIFICATION.getFieldType(), 80, 1, ProductEnum.SPECIFICATION.getRequired(), 0),
    // 产品图片：file_1
    PRODUCT_IMGS(ProductEnum.PRODUCT_IMGS.getAttr(), ProductEnum.PRODUCT_IMGS.getAttrName(), ProductEnum.PRODUCT_IMGS.getSaasAttr(), ProductEnum.PRODUCT_IMGS.getFieldType(), 70, 1, ProductEnum.PRODUCT_IMGS.getRequired(), 0),
    // 单位：text_8
    UNIT(ProductEnum.UNIT.getAttr(), ProductEnum.UNIT.getAttrName(), ProductEnum.UNIT.getSaasAttr(), ProductEnum.UNIT.getFieldType(), 50, 1, ProductEnum.UNIT.getRequired(), 0),
    // 单价: num_1
    PRICE(SelectProductEnum.PRICE.getAttr(), SelectProductEnum.PRICE.getAttrName(), SelectProductEnum.PRICE.getSaasAttr(), FieldTypeEnum.NUM.getType(), 40, 1, ProductEnum.PRICE.getRequired(), 0),
    // 折扣：num_4
    DISCOUNT(SelectProductEnum.DISCOUNT.getAttr(), SelectProductEnum.DISCOUNT.getAttrName(), SelectProductEnum.DISCOUNT.getSaasAttr(), FieldTypeEnum.NUM.getType(), 30, 1, 1, 1),
    // 售价：num_6
    SELLING_PRICE(SelectProductEnum.SELLING_PRICE.getAttr(), "enum.priceProduct.attrName.selling_price", SelectProductEnum.SELLING_PRICE.getSaasAttr(), FieldTypeEnum.NUM.getType(), 20, 1, 1, 1),
    // 售价浮动上限：
    SELLING_PRICE_UP("num_10", "enum.priceProduct.attrName.selling_price_up", ProductEnum.NAME.getSaasAttr(), FieldTypeEnum.NUM.getType(), 10, 1, 0, 1),
    // 售价浮动下限：
    SELLING_PRICE_DOWN("num_11", "enum.priceProduct.attrName.selling_price_down", ProductEnum.NAME.getSaasAttr(), FieldTypeEnum.NUM.getType(), 5, 1, 0, 1),
    // 父产品id:num_3
    PARENT_ID(ProductEnum.PARENT_ID.getAttr(), ProductEnum.PARENT_ID.getAttrName(), ProductEnum.PARENT_ID.getSaasAttr(), ProductEnum.PARENT_ID.getFieldType(), ProductEnum.PARENT_ID.getSort(), 0, ProductEnum.PARENT_ID.getRequired(), 0),
    ;

    /**
     * 英文名称
     */
    private final String attr;
    /**
     * 中文名称
     */
    private final String attrName;
    /**
     * 对应saas中的attr
     */
    private final String saasAttr;
    /**
     * 字段类型，详见
     *
     * @see com.xbongbong.paas.enums.FieldTypeEnum
     */
    private final Integer fieldType;

    /**
     * 字段在模板设计界面的排序
     * 建议不要用连续的数字，可以用等差数列，以防以后在两个字段之间加入新字段
     */
    private final Integer sort;
    /**
     * 字段在各个界面是否可见(启用)
     * 1：可见
     * 0：不可见
     * 注：字段在具体页面的可见性需要用属性和showType联合判断，在visible=1的情况下判断showType
     */
    private final Integer visible;
    /**
     * 字段是否必填
     * 1：必填
     * 0：不必填
     */
    private final Integer required;
    /**
     * 是否允许编辑 1：允许 0：不允许
     */
    private final Integer editable;

    PriceProductEnum(String attr, String attrName, String saasAttr, Integer fieldType, Integer sort, Integer visible, Integer required, Integer editable) {
        this.attr = attr;
        this.attrName = attrName;
        this.saasAttr = saasAttr;
        this.fieldType = fieldType;
        this.sort = sort;
        this.visible = visible;
        this.required = required;
        this.editable = editable;
    }

    public String getAttrName() {
        return I18nMessageUtil.getMessage(attrName);
    }

}
